// pages/dynamic/detail.js
const { newsAPI } = require('../../utils/util.js')

Page({

  /**
   * 页面的初始数据
   */
  data: {
    news: {}, // 新闻详情数据
    isLoading: true, // 加载状态
    error: false, // 是否出错
    errorMsg: '', // 错误信息
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const newsId = options.id;
    if (newsId) {
      this.fetchNewsDetail(newsId);
    } else {
      this.setData({
        error: true,
        errorMsg: '新闻ID不能为空',
        isLoading: false
      });
    }
  },

  // 从后端API获取新闻详情
  fetchNewsDetail(newsId) {
    this.setData({ isLoading: true, error: false });

    // 由于后端没有提供获取单个新闻详情的接口，我们通过搜索接口获取
    newsAPI.searchNews({ currentUserId: 1 })
      .then(res => {
        console.log('新闻数据获取成功:', res);

        if (res.code === 200) {
          // 从搜索结果中找到对应的新闻
          const news = res.data.find(item => item.newsId == newsId);

          if (news) {
            // 转换数据格式以适配前端显示
            const newsDetail = {
              id: news.newsId,
              title: news.newsTitle,
              cover: this.buildImageUrl(news.newsImagePath),
              time: this.formatDateTime(news.createTime),
              author: news.author,
              content: news.newsContent,
              summary: this.cleanHtmlTags(news.newsSummary),
              status: news.newsStatus
            };

            this.setData({
              news: newsDetail,
              isLoading: false
            });
          } else {
            this.setData({
              error: true,
              errorMsg: '新闻不存在',
              isLoading: false
            });
          }
        } else {
          this.setData({
            error: true,
            errorMsg: res.message || '获取新闻详情失败',
            isLoading: false
          });
        }
      })
      .catch(err => {
        console.error('获取新闻详情失败:', err);
        this.setData({
          error: true,
          errorMsg: '网络请求失败',
          isLoading: false
        });
      });
  },

  // 格式化日期时间
  formatDateTime(dateTimeStr) {
    if (!dateTimeStr) return '';
    const date = new Date(dateTimeStr);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  },

  // 构建图片URL
  buildImageUrl(imageName) {
    if (!imageName) {
      return 'https://picsum.photos/750/300?random=1'; // 默认图片
    }
    // 如果已经是完整URL，直接返回
    if (imageName.startsWith('http://') || imageName.startsWith('https://')) {
      return imageName;
    }
    // 构建完整的图片URL
    return `${getApp().globalData.apiBaseUrl}/images/${imageName}`;
  },

  // 清理HTML标签
  cleanHtmlTags(htmlContent) {
    if (!htmlContent) return '';

    // 移除HTML标签，保留文本内容
    return htmlContent
      .replace(/<p[^>]*>/gi, '') // 移除开始p标签
      .replace(/<\/p>/gi, '\n') // 将结束p标签替换为换行
      .replace(/<br[^>]*>/gi, '\n') // 将br标签替换为换行
      .replace(/<[^>]+>/g, '') // 移除其他所有HTML标签
      .replace(/&nbsp;/g, ' ') // 将&nbsp;替换为空格
      .replace(/&amp;/g, '&') // 将&amp;替换为&
      .replace(/&lt;/g, '<') // 将&lt;替换为<
      .replace(/&gt;/g, '>') // 将&gt;替换为>
      .replace(/&quot;/g, '"') // 将&quot;替换为"
      .trim(); // 去除首尾空格
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: `【${this.data.news.title}】来自测盟汇的行业动态`,
      path: `/pages/dynamic/detail?id=${this.data.news.id}`,
      imageUrl: this.data.news.cover,
    };
  },

  // 封面加载失败兜底
  onCoverError() {
    this.setData({ 'news.cover': '/assets/icons/default-cover.png' });
  },

  // 重新加载（错误时）
  reloadData() {
    this.fetchNewsDetail(this.data.news.id);
  },
})